<?php
    /* 
    *接口说明:  数据库基础操作类
    *创建者:    kai
    *时间:	    20180404
    */
    class mysql_acc
    {
        // 数据库链接
        public $conn;
        // 错误代码
        private $errcode;
        // 错误说明
        private $errinfo;
        
        // 构造函数
        public function __construct($host, $username, $password, $dbname, $charset="UTF8"){
            echo "对象构造函数被调用";
            do{
                 // 创建连接
                 $this->conn = mysqli_connect($host, $username, $password);
                // 检测连接
                if (!$this->conn) {
                    $this->errcode = 1;
                    $this->errinfo = "获取mysql数据库链接失败.mysqlerrno:".mysqli_connect_errno().",mysqlerror:".mysqli_connect_error();
                    break;
                }

                // 选择数据库
                if(!mysqli_select_db($this->conn, $dbname)){
                    $this->errcode = 2;
                    $this->errinfo = "选择数据库失败.mysqlerrno:".mysqli_connect_errno().",mysqlerror:".mysqli_connect_error();
                    break;
                }

                // 设置数据库编码
                if(!mysqli_set_charset($this->conn, $charset)){
                    $this->errcode = 3;
                    $this->errinfo = "设置数据库编码失败.mysqlerrno:".mysqli_connect_errno().",mysqlerror:".mysqli_connect_error();
                    break;
                }
            }while(false);
            // 根据错误信息判断是否需要传出数据库链接
            if($this->errcode != 0){
                // 判断数据库链接是否有效，有效则释放掉
                if($this->conn){
                    mysqli_close($this->conn);
                }
            }
        }

        // 析构函数
        function __destruct(){
            echo "对象析构函数被调用";
             // 判断数据库链接是否有效，有效则释放掉
             if($this->conn){
                mysqli_close($this->conn);
            }
        }

        // 执行sql语句
        function dbexecute($sql, $isquery = false){
            echo "执行函数被调用";
            $arrResult = null;
            do{
                // 判断数据库链接是否有效
                if($this->conn == null){
                    $arrResult = array(
                        "errcode" => 1,
                        "errinfo" => "数据库链接无效",
                        );
                    break;
                }
                // 执行sql语句
                $sqlResult = mysqli_query($this->conn, $sql);
                if(!$sqlResult){
                    $arrResult = array(
                        "errcode" => 2,
                        "errinfo" => "查询失败.mysqlerrno:". mysqli_connect_errno().",mysqlerrinfo:".mysqli_connect_error(),
                    );
                    break;
                }
                // 判断是否是查询操作
                if($isquery){
                    // 获取数据库记录
                    $arrayRecord = array();
                    while($row = mysqli_fetch_assoc($sqlResult))
                    {
                        $arrayRecord[] = $row;
                    }
                }else{
                    // 判断执行结果
                    if($sqlResult == false){
                        $arrResult = array(
                            "errcode" => 3,
                            "errinfo" => "执行失败.mysqlerrno:". mysqli_connect_errno().",mysqlerrinfo:".mysqli_connect_error(),
                        );
                        break;
                    }
                }
                // 执行成功
                $arrResult = array(
                    "errcode" => 0,
                    "result" => $arrayRecord,
                );
            }while(false);
            return $arrResult;
        }

        // 获取错误代码
        function getlasterrcode(){
            return $this->errcode;
        }

        // 获取错误信息
        function getlasterrinfo(){
            return $this->errinfo;
        }
    } 
    
?>